{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](matminer_logo_small.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Matminer Examples: Data Mining in Materials Science"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you had any questions related to matminer, please consult the [official documentation](https://hackingmaterials.github.io/matminer/). If the documentation did not cover your question, please look for it in [matminer forum](https://groups.google.com/forum/#!forum/matminer) and if not already answered, post your question there as others may have the same question. If you found it useful in your work, please cite [matminer paper](https://www.sciencedirect.com/science/article/pii/S0927025618303252)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Background"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* The purpose of this tutorial is to provide examples of how to use different aspects of the materials data minining python package, [*matminer*](https://github.com/hackingmaterials/matminer), from gathering the data to featurization, visualization and training machine learning models to predict materials properties. \n",
    "\n",
    "\n",
    "* You may be going through these notebooks via [binder](https://mybinder.org/) in which case you can double-click on any given cell and change the source and then use shift + enter to run that cell and see the result of your change. Do not worry as binder creates your own isolated environment so you are not really changing any source code. Alternatively, you can clone the [matminer_examples](https://github.com/hackingmaterials/matminer_examples) Github repository to run these notebooks on your machine and also checkout the examples that are written in simple python script which are not shown here.\n",
    "\n",
    "\n",
    "* Finally, having a basic knowledge of python programming language and Pandas (spreadsheet for python) would maximize the benefits of these examples."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Notebook examples"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In these notebooks we show how to use matminer to retrieve materials data (e.g. composition, band gaps), generate features for materials (e.g. using their formula or crystal structures), visualize, train machine learning models, interpret and evaluate those models.\n",
    "\n",
    "![](matminer_flowchart.png)\n",
    "\n",
    "Note: \"Advanced\" notebooks refer to those that require some knowledge of [pandas](https://pandas.pydata.org/) or [scikit-learn](http://scikit-learn.org/)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Data Retrieval\n",
    "\n",
    "* [Basic](data_retrieval-nb/data_retrieval_basics.ipynb): Retrieve data from the following platforms: \n",
    "    * The Materials Project, Citrine Informatics, The Materials Data Facility and The Materials Platform for Data Science\n",
    "* [Basic](data_retrieval-nb/expt_vs_comp_bandgap.ipynb): Use the data retrieval tools to compare computed and experimental band gaps and also plot with FigRecipes\n",
    "* [Basic](data_retrieval-nb/jarvis.ipynb): Work with the NIST Jarvis database\n",
    "* [Basic](data_retrieval-nb/mpds.ipynb): Work with the Materials Platform for Data Science (MPDS) to conduct U-O bond length analysis (requires MPDS API key)\n",
    "\n",
    "### Visualization\n",
    "\n",
    "* [Basic](figrecipes-nb/figrecipes_basics.ipynb): basic plots with figrecipes package\n",
    "* [Advanced](figrecipes-nb/figrecipes_advanced.ipynb): showing data retrieval results in nicely formatted plots all within matminer\n",
    "\n",
    "More visualization examples (in Python script rather than Juypter notebook format) can be found in the figrecipes-py folder of the examples directory.\n",
    "\n",
    "### Machine Learning\n",
    "\n",
    "* [Basic](machine_learning-nb/bulk_modulus.ipynb): Predicting the bulk/shear moduli of compounds\n",
    "* [Advanced](machine_learning-nb/voronoi-ward-prb-2017.ipynb): (Note this requires ~2 CPU hours)\n",
    "    * Structure feature generation in matminer, train a model and implement a cross-validation of the model\n",
    "* [Advanced](machine_learning-nb/formation_e.ipynb): Predict the formation enthalpy of OQMD compounds using composition descriptors only and cross-validate\n",
    "* [Advanced](machine_learning-nb/sklearn_pipeline.ipynb): Using sklearn Pipeline\n",
    "    * Composition feature generation in matminer, train and validate a machine learning model and optimize its hyperparameters\n",
    "* [Advanced](machine_learning-nb/rf-with-uncertainty.ipynb): Train random forests with uncertainty estimates\n",
    "\n",
    "### Automatminer\n",
    "* [Basic](automatminer/automatminer_basic.ipynb): Use automatminer to make predictions on a benchmark dataset.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
